﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


struct user
{
    public string username;
    public string password;
    public string ip;
};
namespace ServerVideoCall
{
    public partial class UserConfiguration : Form
    {
        public int ROLE = 0;
        DataProvider DuLieu = new DataProvider();
        public delegate void Ext();
        public event Ext ExitProGram = null;
        public virtual void OnExit()
        {
            if (ExitProGram != null)
                ExitProGram();
        }
        DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
        public UserConfiguration()
        {
            InitializeComponent();
        }
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int curRow = int.Parse(e.RowIndex.ToString());
            string user = dataGridView1.Rows[curRow].Cells[1].Value.ToString();
            switch (e.ColumnIndex)
            {
                case 4:
                    if (user != "" && ROLE != 0)
                    {
                        DuLieu.Resetpassword(user);
                        MessageBox.Show("Đã reset password " + user + " về mặc định");
                        LoadDuLieu();
                    }
                    else
                        MessageBox.Show("Bạn Không Được Phép Thực Hiện Tác Vụ Này", "VideoCall - Remove User", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                case 5:
                    if (user != "" && ROLE != 0)
                    {
                        if (MessageBox.Show("Bạn Có Muốn Xóa user : " + user, "VideoCall - Remove User", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            DuLieu.Remove(user);
                            LoadDuLieu();
                        }
                    }
                    else
                        MessageBox.Show("Bạn Không Được Phép Thực Hiện Tác Vụ Này", "VideoCall - Remove User", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (txtpass1.Text == txtpass2.Text && txtpass1.Text != "")
            {
                if(ROLE == 0)
                    DuLieu.ChangePasswordAdmin("admin",txtpass1.Text);
                else
                    DuLieu.ChangePasswordAdmin("superadmin", txtpass1.Text);
                MessageBox.Show("Đã thay đổi mật khẩu admin", "VideoCall - SendMessage()", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
                MessageBox.Show("2 ô mật khẩu không trùng nhau", "VideoCall - SendMessage()", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void UserConfiguration_Load(object sender, EventArgs e)
        {
            LoadDuLieu();
            txtclientcurrent.Text = dataGridView1.RowCount.ToString(); 
        }

        private void LoadDuLieu()
        {
            // kiểm tra quyền của admin de hien phan them user
            if (ROLE == 0)
                grbaddnew.Visible = false;


            // Lấy dữ liệu từ csdl lên gridview
            try
            {
                dataGridView1.Controls.Clear();
                dataGridView1.Rows.Clear();
            }
            catch (Exception){}

            int STT = 1;
            foreach(var row in DuLieu.Export())
            {
                object[] arr = new object[] {STT++, row.Username, row.Password, row.Ip };
                dataGridView1.Rows.Add(arr); 
            }
        }
        private void UserConfiguration_FormClosed(object sender, FormClosedEventArgs e)
        {
            ExitProGram();
        }

        private void btn_Refresh_Click(object sender, EventArgs e)
        {
            txtnewuser.Text = "";
            txtpassuser.Text = "";
            txtip.Text = "";
        }

        private void btn_Add_Click(object sender, EventArgs e)
        {
            if (txtnewuser.Text != "" && txtpassuser.Text != "" && txtip.Text != "")
            {
                int kq = DuLieu.InsertUser(txtnewuser.Text, txtpassuser.Text, txtip.Text);
                if (kq == 1)
                    MessageBox.Show("Username đã tồn tại", "VideoCall - Insert New User", MessageBoxButtons.OK, MessageBoxIcon.Error);
                else
                {
                    if (kq == 2)
                        MessageBox.Show("IP đã tồn tại", "VideoCall - Insert New User", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    else
                        MessageBox.Show("Đã Thêm Thành Công", "VideoCall - Insert New User", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                LoadDuLieu();
            }
            else
                MessageBox.Show("Không Được Để Trống Thông Tin", "VideoCall - Insert New User", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int curRow = int.Parse(e.RowIndex.ToString());
            string user = dataGridView1.Rows[curRow].Cells[1].Value.ToString();
            string ip = dataGridView1.Rows[curRow].Cells[3].Value.ToString();
            if (user != "")
            {
                if (e.ColumnIndex == 0 || e.ColumnIndex == 1 || e.ColumnIndex == 2 || e.ColumnIndex == 3)
                {
                    txtcnusername.Text = user;
                    txtcnIp.Text = ip;
                }
            }
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (txtcnIp.Text != "")
            {
                if (DuLieu.UpdateIP(txtcnusername.Text, txtcnIp.Text) == true)
                    MessageBox.Show("Đã Cập Nhật Ip mơi cho :" + txtcnusername.Text,"VideoCall - UpdateIP",MessageBoxButtons.OK,MessageBoxIcon.Information);
                else
                    MessageBox.Show("Ip đã tồn tại - vui lòng chọn ip khác", "VideoCall - UpdateIP", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDuLieu();
            }
        }
    }
}
